//
//  Scenario.h
//  TrackingSim
//
//  Created by Garrett Manka on 11/25/11.
//  Copyright (c) 2011. All rights reserved.
//

#ifndef TrackingSim_Scenario_h
#define TrackingSim_Scenario_h

#include <sim/Player.h>
#include <list>
#include <vector>

namespace Sim
{
    class Scenario
    {
    public:
        
        Scenario(double updateFrequency);
        ~Scenario();
        
        void addPlayer(Player* player);
        void addPlayers(std::vector<Player*>& players);
        void removePlayer(unsigned int playernum);
        
        Player* getPlayer(unsigned int playernum);
        
        Player* getMainPlayer() const;
        void setMainPlayer( Player* mainplayer );
        void cycleMainPlayer();
        
        std::list< Player* >& getPlayerList();
        
        double getUpdateFrequency() const;
        double getUpdatePeriod() const;
        
        Scenario& operator=( const Scenario& rhs );
        
    private:
        
        std::list< Player* > m_playerlist;
        Player* m_main_player;
        double m_update_frequency;
    };
}

#endif
